package com.biosimilarity.parallelOgram.model.parallelOgram;
import com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.*;
/*** BNFC-Generated Visitor Design Pattern Skeleton. ***/
/* This implements the common visitor design pattern.
   Tests show it to be slightly less efficient than the
   instanceof method, but easier to use. 
   Replace the R and A parameters with the desired return
   and context types.*/

public class VisitSkel
{
  public class ProcessExprVisitor<R,A> implements ProcessExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Mixed p, A arg)
    {
      /* Code For Mixed Goes Here */

      p.collectionexpr_.accept(new CollectionExprVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Selected p, A arg)
    {
      /* Code For Selected Goes Here */

      p.summationexpr_.accept(new SummationExprVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Engaged p, A arg)
    {
      /* Code For Engaged Goes Here */

      p.receiveexpr_.accept(new ReceiveExprVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Carried p, A arg)
    {
      /* Code For Carried Goes Here */

      p.sendexpr_.accept(new SendExprVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Served p, A arg)
    {
      /* Code For Served Goes Here */

      p.siteexpr_.accept(new SiteExprVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Varied p, A arg)
    {
      /* Code For Varied Goes Here */

      p.processvar_.accept(new ProcessVarVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Emptied p, A arg)
    {
      /* Code For Emptied Goes Here */


      return null;
    }

  }
  public class CollectionExprVisitor<R,A> implements CollectionExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectedExtension p, A arg)
    {
      /* Code For CollectedExtension Goes Here */

      for (ProcessExpr x : p.listprocessexpr_) {
      }

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectedIntension p, A arg)
    {
      /* Code For CollectedIntension Goes Here */

      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);
      for (ProcessDeclOrCond x : p.listprocessdeclorcond_) {
      }

      return null;
    }

  }
  public class SummationExprVisitor<R,A> implements SummationExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Switched p, A arg)
    {
      /* Code For Switched Goes Here */

      p.summationbody_.accept(new SummationBodyVisitor<R,A>(), arg);

      return null;
    }

  }
  public class SummationBodyVisitor<R,A> implements SummationBody.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SwitchedExtension p, A arg)
    {
      /* Code For SwitchedExtension Goes Here */

      for (ReceiveExpr x : p.listreceiveexpr_) {
      }

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SwitchedIntension p, A arg)
    {
      /* Code For SwitchedIntension Goes Here */

      p.guardedptn_.accept(new GuardedPtnVisitor<R,A>(), arg);
      for (GuardedDeclOrCond x : p.listguardeddeclorcond_) {
      }

      return null;
    }

  }
  public class ReceiveExprVisitor<R,A> implements ReceiveExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Synched p, A arg)
    {
      /* Code For Synched Goes Here */

      p.siteexpr_.accept(new SiteExprVisitor<R,A>(), arg);
      p.abstractionexpr_.accept(new AbstractionExprVisitor<R,A>(), arg);

      return null;
    }

  }
  public class SendExprVisitor<R,A> implements SendExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CoSynched p, A arg)
    {
      /* Code For CoSynched Goes Here */

      p.siteexpr_.accept(new SiteExprVisitor<R,A>(), arg);
      p.informationexpr_.accept(new InformationExprVisitor<R,A>(), arg);

      return null;
    }

  }
  public class AbstractionExprVisitor<R,A> implements AbstractionExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Abstracted p, A arg)
    {
      /* Code For Abstracted Goes Here */

      p.exchangeformals_.accept(new ExchangeFormalsVisitor<R,A>(), arg);
      p.processexpr_.accept(new ProcessExprVisitor<R,A>(), arg);

      return null;
    }

  }
  public class InformationExprVisitor<R,A> implements InformationExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Manifested p, A arg)
    {
      /* Code For Manifested Goes Here */

      for (ExchangeExpr x : p.listexchangeexpr_) {
      }

      return null;
    }

  }
  public class ExchangeFormalsVisitor<R,A> implements ExchangeFormals.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeFormalSpec p, A arg)
    {
      /* Code For ExchangeFormalSpec Goes Here */

      for (ExchangeExpr x : p.listexchangeexpr_) {
      }

      return null;
    }

  }
  public class ProcessPtnVisitor<R,A> implements ProcessPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.MixtureDestructed p, A arg)
    {
      /* Code For MixtureDestructed Goes Here */

      for (ProcessPtn x : p.listprocessptn_) {
      }

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionDestructed p, A arg)
    {
      /* Code For SelectionDestructed Goes Here */

      p.selectionbodyptn_.accept(new SelectionBodyPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveDestructed p, A arg)
    {
      /* Code For ReceiveDestructed Goes Here */

      p.guardedptn_.accept(new GuardedPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendDestructed p, A arg)
    {
      /* Code For SendDestructed Goes Here */

      p.siteptn_.accept(new SitePtnVisitor<R,A>(), arg);
      p.informationptn_.accept(new InformationPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ServeDestructed p, A arg)
    {
      /* Code For ServeDestructed Goes Here */

      p.selectionbodyptn_.accept(new SelectionBodyPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnLiteral p, A arg)
    {
      /* Code For ProcessPtnLiteral Goes Here */

      p.processexpr_.accept(new ProcessExprVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnPVar p, A arg)
    {
      /* Code For ProcessPtnPVar Goes Here */

      p.processvar_.accept(new ProcessVarVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnWild p, A arg)
    {
      /* Code For ProcessPtnWild Goes Here */

      //p.wild_;

      return null;
    }

  }
  public class SelectionBodyPtnVisitor<R,A> implements SelectionBodyPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectBodyDestruct p, A arg)
    {
      /* Code For SelectBodyDestruct Goes Here */

      for (GuardedPtn x : p.listguardedptn_) {
      }

      return null;
    }

  }
  public class GuardedPtnVisitor<R,A> implements GuardedPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedDestruct p, A arg)
    {
      /* Code For GuardedDestruct Goes Here */

      p.siteptn_.accept(new SitePtnVisitor<R,A>(), arg);
      p.abstractionptn_.accept(new AbstractionPtnVisitor<R,A>(), arg);

      return null;
    }

  }
  public class InformationPtnVisitor<R,A> implements InformationPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationDestruct p, A arg)
    {
      /* Code For InformationDestruct Goes Here */

      for (ProcessPtn x : p.listprocessptn_) {
      }

      return null;
    }

  }
  public class AbstractionPtnVisitor<R,A> implements AbstractionPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionDestruct p, A arg)
    {
      /* Code For AbstractionDestruct Goes Here */

      p.formalsptn_.accept(new FormalsPtnVisitor<R,A>(), arg);
      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);

      return null;
    }

  }
  public class SitePtnVisitor<R,A> implements SitePtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteQuotePtn p, A arg)
    {
      /* Code For SiteQuotePtn Goes Here */

      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVarPtn p, A arg)
    {
      /* Code For SiteVarPtn Goes Here */

      p.sitevar_.accept(new SiteVarVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteWildPtn p, A arg)
    {
      /* Code For SiteWildPtn Goes Here */

      //p.wild_;

      return null;
    }

  }
  public class FormalsPtnVisitor<R,A> implements FormalsPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsDestruct p, A arg)
    {
      /* Code For FormalsDestruct Goes Here */

      for (PtnPtn x : p.listptnptn_) {
      }

      return null;
    }

  }
  public class PtnPtnVisitor<R,A> implements PtnPtn.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnLiteralDestruct p, A arg)
    {
      /* Code For PtnLiteralDestruct Goes Here */

      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnVarDestruct p, A arg)
    {
      /* Code For PtnVarDestruct Goes Here */

      //p.uident_;

      return null;
    }

  }
  public class ExchangeExprVisitor<R,A> implements ExchangeExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Substituted p, A arg)
    {
      /* Code For Substituted Goes Here */

      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Variable p, A arg)
    {
      /* Code For Variable Goes Here */

      p.sitevar_.accept(new SiteVarVisitor<R,A>(), arg);

      return null;
    }

  }
  public class ProcessDeclOrCondVisitor<R,A> implements ProcessDeclOrCond.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessRequired p, A arg)
    {
      /* Code For ProcessRequired Goes Here */

      p.processcondition_.accept(new ProcessConditionVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenerated p, A arg)
    {
      /* Code For ProcessGenerated Goes Here */

      p.processgenerator_.accept(new ProcessGeneratorVisitor<R,A>(), arg);

      return null;
    }

  }
  public class ProcessGeneratorVisitor<R,A> implements ProcessGenerator.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenExpr p, A arg)
    {
      /* Code For ProcessGenExpr Goes Here */

      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);
      p.processexpr_.accept(new ProcessExprVisitor<R,A>(), arg);

      return null;
    }

  }
  public class ProcessConditionVisitor<R,A> implements ProcessCondition.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessReqExpr p, A arg)
    {
      /* Code For ProcessReqExpr Goes Here */

      p.processptn_.accept(new ProcessPtnVisitor<R,A>(), arg);
      p.processproperty_.accept(new ProcessPropertyVisitor<R,A>(), arg);

      return null;
    }

  }
  public class GuardedDeclOrCondVisitor<R,A> implements GuardedDeclOrCond.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedRequired p, A arg)
    {
      /* Code For GuardedRequired Goes Here */

      p.guardedcondition_.accept(new GuardedConditionVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenerated p, A arg)
    {
      /* Code For GuardedGenerated Goes Here */

      p.guardedgenerator_.accept(new GuardedGeneratorVisitor<R,A>(), arg);

      return null;
    }

  }
  public class GuardedGeneratorVisitor<R,A> implements GuardedGenerator.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenExpr p, A arg)
    {
      /* Code For GuardedGenExpr Goes Here */

      p.guardedptn_.accept(new GuardedPtnVisitor<R,A>(), arg);
      p.receiveexpr_.accept(new ReceiveExprVisitor<R,A>(), arg);

      return null;
    }

  }
  public class GuardedConditionVisitor<R,A> implements GuardedCondition.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedReqExpr p, A arg)
    {
      /* Code For GuardedReqExpr Goes Here */

      p.guardedptn_.accept(new GuardedPtnVisitor<R,A>(), arg);
      p.guardedshape_.accept(new GuardedShapeVisitor<R,A>(), arg);

      return null;
    }

  }
  public class ProcessPropertyVisitor<R,A> implements ProcessProperty.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessDisjunction p, A arg)
    {
      /* Code For ProcessDisjunction Goes Here */

      p.processproperty_1.accept(new ProcessPropertyVisitor<R,A>(), arg);
      p.processproperty_2.accept(new ProcessPropertyVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessConjunction p, A arg)
    {
      /* Code For ProcessConjunction Goes Here */

      p.processproperty_1.accept(new ProcessPropertyVisitor<R,A>(), arg);
      p.processproperty_2.accept(new ProcessPropertyVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessNegation p, A arg)
    {
      /* Code For ProcessNegation Goes Here */

      p.processproperty_.accept(new ProcessPropertyVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessStructure p, A arg)
    {
      /* Code For ProcessStructure Goes Here */

      p.processshape_.accept(new ProcessShapeVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGround p, A arg)
    {
      /* Code For ProcessGround Goes Here */

      p.groundprocessproperty_.accept(new GroundProcessPropertyVisitor<R,A>(), arg);

      return null;
    }

  }
  public class ProcessShapeVisitor<R,A> implements ProcessShape.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.MixtureProp p, A arg)
    {
      /* Code For MixtureProp Goes Here */

      for (ProcessProperty x : p.listprocessproperty_) {
      }

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveProp p, A arg)
    {
      /* Code For ReceiveProp Goes Here */

      p.guardedshape_.accept(new GuardedShapeVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendProp p, A arg)
    {
      /* Code For SendProp Goes Here */

      p.siteprop_.accept(new SitePropVisitor<R,A>(), arg);
      p.informationshape_.accept(new InformationShapeVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ServeProp p, A arg)
    {
      /* Code For ServeProp Goes Here */

      p.selectionbodyshape_.accept(new SelectionBodyShapeVisitor<R,A>(), arg);

      return null;
    }

  }
  public class InformationShapeVisitor<R,A> implements InformationShape.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.DataShape p, A arg)
    {
      /* Code For DataShape Goes Here */

      for (ProcessProperty x : p.listprocessproperty_) {
      }

      return null;
    }

  }
  public class SelectionBodyShapeVisitor<R,A> implements SelectionBodyShape.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectBodyProp p, A arg)
    {
      /* Code For SelectBodyProp Goes Here */

      for (GuardedShape x : p.listguardedshape_) {
      }

      return null;
    }

  }
  public class GuardedShapeVisitor<R,A> implements GuardedShape.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedProp p, A arg)
    {
      /* Code For GuardedProp Goes Here */

      p.siteprop_.accept(new SitePropVisitor<R,A>(), arg);
      p.abstractionprop_.accept(new AbstractionPropVisitor<R,A>(), arg);

      return null;
    }

  }
  public class AbstractionPropVisitor<R,A> implements AbstractionProp.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractedProp p, A arg)
    {
      /* Code For AbstractedProp Goes Here */

      p.formalsprop_.accept(new FormalsPropVisitor<R,A>(), arg);
      p.processproperty_.accept(new ProcessPropertyVisitor<R,A>(), arg);

      return null;
    }

  }
  public class SitePropVisitor<R,A> implements SiteProp.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteShape p, A arg)
    {
      /* Code For SiteShape Goes Here */

      p.processproperty_.accept(new ProcessPropertyVisitor<R,A>(), arg);

      return null;
    }

  }
  public class FormalsPropVisitor<R,A> implements FormalsProp.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamsProp p, A arg)
    {
      /* Code For ParamsProp Goes Here */

      for (FormalProp x : p.listformalprop_) {
      }

      return null;
    }

  }
  public class FormalPropVisitor<R,A> implements FormalProp.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamIdentProp p, A arg)
    {
      /* Code For ParamIdentProp Goes Here */

      //p.uident_;

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamShapeProp p, A arg)
    {
      /* Code For ParamShapeProp Goes Here */

      p.siteprop_.accept(new SitePropVisitor<R,A>(), arg);

      return null;
    }

  }
  public class GroundProcessPropertyVisitor<R,A> implements GroundProcessProperty.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessLogicGround p, A arg)
    {
      /* Code For ProcessLogicGround Goes Here */

      p.logicalground_.accept(new LogicalGroundVisitor<R,A>(), arg);

      return null;
    }

  }
  public class LogicalGroundVisitor<R,A> implements LogicalGround.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Verity p, A arg)
    {
      /* Code For Verity Goes Here */


      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Absurdity p, A arg)
    {
      /* Code For Absurdity Goes Here */


      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Nullity p, A arg)
    {
      /* Code For Nullity Goes Here */


      return null;
    }

  }
  public class SiteExprVisitor<R,A> implements SiteExpr.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteIdent p, A arg)
    {
      /* Code For SiteIdent Goes Here */

      //p.lident_;

      return null;
    }
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteQuotation p, A arg)
    {
      /* Code For SiteQuotation Goes Here */

      p.processexpr_.accept(new ProcessExprVisitor<R,A>(), arg);

      return null;
    }

  }
  public class SiteVarVisitor<R,A> implements SiteVar.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVarIdent p, A arg)
    {
      /* Code For SiteVarIdent Goes Here */

      //p.lident_;

      return null;
    }

  }
  public class ProcessVarVisitor<R,A> implements ProcessVar.Visitor<R,A>
  {
    public R visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessIdent p, A arg)
    {
      /* Code For ProcessIdent Goes Here */

      //p.uident_;

      return null;
    }

  }
}